﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using Informant.Contacts;

namespace Informant.ErrorHandling
{
	public class SmsException : Exception
	{
		/// <summary>
		/// Gets or sets the rejected recipients.
		/// </summary>
		/// <value>The rejected recipients.</value>
		public IEnumerable<IPhone> RejectedRecipients { get; private set; }

		/// <summary>
		/// Initializes a new instance of the <see cref="SmsException"/> class.
		/// </summary>
		public SmsException() { }
		/// <summary>
		/// Initializes a new instance of the <see cref="SmsException"/> class.
		/// </summary>
		/// <param name="message">The message.</param>
		public SmsException(String message) : base(message) { }
		/// <summary>
		/// Initializes a new instance of the <see cref="SmsException"/> class.
		/// </summary>
		/// <param name="message">The message.</param>
		/// <param name="rejectedRecipients">The rejected recipients.</param>
		public SmsException(String message, IEnumerable<IPhone> rejectedRecipients) : base(message) 
		{
			RejectedRecipients = rejectedRecipients;
		}
		/// <summary>
		/// Initializes a new instance of the <see cref="SmsException"/> class.
		/// </summary>
		/// <param name="message">The message.</param>
		/// <param name="inner">The inner.</param>
		public SmsException(String message, Exception inner) : base(message, inner) { }
		/// <summary>
		/// Initializes a new instance of the <see cref="SmsException"/> class.
		/// </summary>
		/// <param name="message">The message.</param>
		/// <param name="rejectedRecipients">The rejected recipients.</param>
		/// <param name="inner">The inner.</param>
		public SmsException(String message, IEnumerable<IPhone> rejectedRecipients, Exception inner) : base(message, inner)
		{
			RejectedRecipients = rejectedRecipients;
		}
	}
}
